# TODO 打印九九乘法表,两层for循环,外循环控制行数,内循环控制当前行的操作
for i in range(1, 10):  # 外层循环控制行，从1开始到9
    for j in range(1, i + 1):  # 内层循环控制列，从1开始到i
        print(f"{j}*{i}={i * j}", end="\t")  # 使用 f-string 格式化字符串，打印一行中的每一个乘法表达式
    print()  # 当一行打印完成后，输出一个换行符，以便开始打印下一行

print("\n")

# 这个代码同样是通过嵌套循环来创建九九乘法表。不过，内部的循环使用了列表推导式来生成每一行的乘法表达式，然后用 join 方法将这些表达式连接起来，最后打印出来。
# 列表推导式 [f"{j}*{i}={i*j}" for j in range(1, i+1)] 生成了一个包含每一行所有乘法表达式的列表，然后 '\t'.join() 方法将这些表达式用制表符（\t）连接成一个字符串。这种方法更为紧凑和Pythonic。
# 关于 "Pythonic"
# "Pythonic" 是 Python 社区中常用的一种术语，用于描述代码是否遵循 Python 的风格和理念。如果一段代码被称为 Pythonic，那么它可能有以下的特点：
# 易读：Pythonic 的代码应该易于理解。Python 的创始人 Guido van Rossum 曾经说过，“代码是写给人看的，附带能让机器执行。”因此，Pythonic 的代码应该注重可读性。
# 遵循 Python 的理念：Python 有一套编程理念，也被称为 "The Zen of Python"（Python 之禅）。你可以通过在 Python 解释器中输入 import this 来查看。Pythonic 的代码应该尽可能遵循这些理念。
# 使用 Python 的特性：Python 提供了很多特性和语法糖，如列表推导式、生成器表达式、装饰器等。Pythonic 的代码应当充分利用这些特性，以提高代码的简洁性和效率。
# 总的来说，"Pythonic" 是一种指导 Python 程序员如何编写出更优雅、更符合 Python 风格的代码的原则。
for i in range(1, 10):
    print('\t'.join([f"{j}*{i}={i * j}" for j in range(1, i + 1)]))
